#ifndef __LINKQUEUE_HPP_
#define __LINKQUEUE_HPP_

#include "DoubleLinkList.hpp"

template <typename T>
//class LinkQueue:public DOubleLinkList<int>  //继承模板的特化已经是普通类
class LinkQueue:public DOubleLinkList<T>//继承了类模板的模板，仍然是类模板 
{
public:
    LinkQueue(){};
    ~LinkQueue(){};
    //类模板调用父类模板函数，需要声明父类模板
    void Push(const T& element)
    {
        DOubleLinkList<T>::InsertTail(element);
    }
    void Pop()
    {
        DOubleLinkList<T>::RemoveByIndex(0);
    }
    T& GetFront()
    {
        if(DOubleLinkList<T>::Size() == 0)
            throw "队列为空！\n";
        return DOubleLinkList<T>::FindByIndex(0);
    }
    bool IsEmpty()
    {
        return DOubleLinkList<T>::Size() == 0;
    }
};

#endif